/**
 * @date 5:46:15 PM
 * IGroupAPIService.java
 * Administrator
 * TODO
 */
package com.qs.education.service;
import com.qs.education.bean.api.PageBean;
import com.qs.education.bean.api.ResponseBean;
import com.qs.education.bean.api.ResponseListBean;
import com.qs.education.bean.beans.EducationGroupResponse;
import com.qs.education.bean.entity.EducationGroup;

/**
 * @class IGroupAPIService	
 * @author Warren
 * @description
 * @date Nov 8, 2018 
 */
public interface IGroupAPIService {
	
	/**
	 * @author Warren
	 * @return EducationGroupResponse
	 * @description id为群号(10001开始增长)，根据群号搜索班群
	 * @date Nov 8, 2018
	 */
	public EducationGroupResponse searchById(Long id);
	
	/**
	 * @author Warren
	 * @param userId 申请的用户id
	 * @param groupId 申请的班群号
	 * @param sendType 申请类型,教师或学生
	 * @return ResponseBean
	 * @description 申请加入班群
	 * @date Nov 19, 2018
	 */
	public ResponseBean apply(Long userId, Long groupId, int sendType); 
	
	/**
	 * @author Warren
	 * @param studentId 学生id
	 * @return ResponseListBean<EducationGroup>
	 * @description 根据学生id获取学生的班群列表
	 * @date Nov 13, 2018
	 */
	public ResponseListBean<EducationGroup> findGroupByStudentId(Long studentId);

	/**
	 * @Description 根据老师Id 查询老师 所有的 群组
	 * @author Leon
	 * @date   Nov 9, 2018
	 * @param  
	 * @return List<EducationGroupResponse>
	 */
	public ResponseListBean<EducationGroupResponse> findGroupByTeacherId(Integer teacherId);
	
	/**
	 * @Description 创建多个班群
	 * @author Leon
	 * @date   Nov 12, 2018
	 * @param  
	 * @return EducationGroupResponse
	 */
	public EducationGroupResponse createGroups(String params);	
	/**
	 * @author Warren
	 * @param id 申请班群消息id
	 * @param messageStatus 教师处理结果
	 * @return ResponseBean
	 * @description 教师处理班群申请
	 * @date Nov 13, 2018
	 */
	public ResponseBean applyHandle(Long id,int messageStatus);
	
	/**
	 * @author Warren
	 * @param ids 移除学生的id集合 
	 * @return ResponseBean
	 * @description 批量移除学生
	 * @date Nov 13, 2018
	 */
	public ResponseBean removeStudents(String ids,String groupId);

	/**
	 * @Description 移除教师
	 * @author Leon
	 * @date   Nov 13, 2018
	 * @param  
	 * @return EducationGroupResponse
	 */
	public EducationGroupResponse removeTeacher(String teacherId,String groupId);
	
	/**
	 * @Description 转让班群
	 * @author Leon
	 * @date   Nov 13, 2018
	 * @param  
	 * @return EducationGroupResponse
	 */
	public EducationGroupResponse transferGroup(String teacherId,String groupId);
	
	/**
	 * @Description 修改班群
	 * @author Leon
	 * @date   Nov 14, 2018
	 * @param  
	 * @return EducationGroupResponse
	 */
	public EducationGroupResponse modifyGroup(EducationGroup group);
	
	/**
	 * @Description 删除班群
	 * @author Leon
	 * @date   Nov 14, 2018
	 * @param  
	 * @return EducationGroupResponse
	 */
	public EducationGroupResponse deleteGroupById(String groupId);

	/**
	 * @Description 查询符合条件的班群信息
	 * @author Jason
	 * @date Nov 20, 2018
	 * @param schoolName
	 * @param currentPage
	 * @param pageSize
	 * @return
	 */
	public PageBean getGroupList(String schoolName, Integer currentPage, Integer pageSize);
}
